Ka I Pun , Martin Steffen , and Volker Stolz I SBN 82 - 7368 - 366
نویسندگان
چکیده
Deadlocks are a common error in programs with lock-based concurrency and are hard to avoid or even to detect. One way for deadlock prevention is to statically analyze the program code to spot sources of potential deadlocks. Often static approaches try to confirm that the lock-taking adheres to a given order, or, better, to infer that such an order exists. Such an order precludes situations of cyclic waiting for each other’s resources, which constitute a deadlock. In contrast, we do not enforce or infer an explicit order on locks. Instead we use a behavioral type and effect system that, in a first stage, checks the behavior of each thread or process against the declared behavior, which captures potential interaction of the thread with the locks. In a second step on a global level, the state space of the behavior is explored to detect potential deadlocks. We define a notion of deadlock-sensitive simulation to prove the soundness of the abstraction inherent in the behavioral description. Soundness of the effect system is proven by subject reduction, formulated such that it captures deadlock-sensitive simulation. To render the state-space finite, we show two further abstractions of the behavior sound, namely restricting the upper bound on re-entrant lock counters, and similarly by abstracting the (in general context-free) behavioral effect into a coarser, tail-recursive description. We prove our analysis sound using a simple, concurrent calculus with re-entrant locks.
منابع مشابه
Ka I Pun , Martin Steffen , and Volker Stolz I SBN 82 - 7368 - 385 - 0 I SSN 0806 - 3036 November 2012
Deadlocks are a common problem in programs with lock-based concurrency and are hard to avoid or even to detect. One way for deadlock prevention is to statically analyse the program code to spot sources of potential deadlocks. We reduce the problem of deadlock checking to race checking, another prominent concurrency-related error for which good (static) checking tools exist. The transformation u...
متن کاملDeadlock checking by a behavioral effect system for lock handling
Deadlocks are a common error in programs with lock-based concurrency and are hard to avoid or even to detect. One way for deadlock prevention is to deadlocks. Often static approaches try to confirm that the lock-taking statically analyze the program code to spot sources of potential adheres to a given order, or, better, to infer that such an order exists. Such an order precludes situations of c...
متن کاملDelta-Oriented Monitor Specification
Delta-oriented programming allows software developers to define software product lines as variations of a common code base, where variations are expressed as so-called program deltas. Monitor-oriented programming (MOP) provides a mechanism to execute functionality based on the execution history of the program; this is useful, e.g., for the purpose of runtime verification and for enforcing secur...
متن کاملLock-Polymorphic Behaviour Inference for Deadlock Checking
ion as described where the abstract lock π confuses an arbitrary number of concrete locks including e.g., those freshly created, which may be taken. Consequently, abstract locks loose their “mutual exclusion” capacity: where a concrete heap is a mapping which associates to each lock references the number of times at most one process is holding it, an abstract heap σ̂ then records how many times ...
متن کامل